import sys
"""小明想吃很多很多巧克力！他很爱吃巧克力，但是甜度爆表的话会受不了。
他有一根很长的巧克力棒，出于强迫症，他决定只从前面掰一整块下来吃。
这个巧克力每一段甜度不一定相同，从前往后第 i 段的甜度为 a [i]，小明希望自己掰下的那一段甜度之和不超过 K。
他转念之间，巧克力之神爆发了，于是他可以任选掰下来的一小段，无视其甜度吃下，只要其他段甜度之和不超过 K 即可。
他想知道自己最多能吃多少段巧克力。
形式化地，给定一个长度为 N 的数组 a [] 和一个整数 K。你可以任选一个 i（i < N），获得下标从 0 到 i 所有元素为一个子数组（即数组前缀），要求子数组的总和不超过 K。
但你可以选择子数组中最多一个元素来使得它的值归 0，在这条件下满足总和不超过 K 即可，以获得可能更长的子数组。
问在这些条件下，最长的这样的子数组长度是多少。"""
def solve():
    # 读取N和K，N表示巧克力棒的段数，K表示甜度上限
    N, K = map(int, sys.stdin.readline().split())
    # 读取每段巧克力的甜度数组a
    a = list(map(int, sys.stdin.readline().split()))

    current_prefix_sum = 0  # 存储当前考察前缀的甜度总和
    max_val_in_current_prefix = 0  # 存储当前考察前缀中甜度最高的值
    max_possible_length = 0  # 存储目前找到的满足条件的最长前缀的长度

    # 遍历数组，逐步延长前缀
    for i in range(N):
        current_prefix_sum += a[i]  # 将当前段的甜度加入总和

        # 更新当前前缀中的最大甜度值
        max_val_in_current_prefix = max(max_val_in_current_prefix, a[i])

        # 检查条件：如果从当前前缀中移除甜度最大的那一段后，剩余的甜度总和不超过K
        if current_prefix_sum - max_val_in_current_prefix <= K:
            # 如果条件满足，则当前前缀的长度(i + 1)是一个可能的答案
            # 由于我们寻找最长的，所以更新max_possible_length
            max_possible_length = i + 1
        else:
            # 如果条件不满足，这意味着即使移除当前前缀中甜度最大的部分，
            # 剩余甜度仍然超过K。
            # 由于a[i]都是非负数，继续增加前缀只会使总和更大，或最大值也同时增大，
            # 导致 (总和 - 最大值) 这一差值不会减小。
            # 因此，如果当前前缀不满足条件，所有更长的前缀也一定不满足条件。
            # 此时可以直接停止遍历。
            break
    # 输出当前测试用例的结果
    print(max_possible_length)

# 读取测试用例的数量T
T = int(sys.stdin.readline())
# 循环处理每个测试用例
for _ in range(T):
    solve()
# 样例输入
# 2
# 7 10
# 1 2 3 4 5 6 7
# 1 1
# 11111
# 样例输出
# 5
# 1